/*
    Nios-sim - one simple NIOSII simulator only for personal interest and fun.
    Copyright (C) 2010  chysun2000@gmail.com

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/

#ifndef __JTAG_UART_H__
#define __JTAG_UART_H__

#include "io_device.h"
#define JTAG_UART_REG_COUNT (2)
#define JTAG_UART_CTRL_REG (0)
#define JTAG_UART_DATA_REG (1)
#define JTAG_UART_BASE_ADDR (0x806810F0)
#define JTAG_IRQ_MASK (1 << 1)
#define JTAG_UART_FIFO_SIZE (1)

struct fifo {
	uint8_t data;
	uint8_t is_write;
};

struct jtag_uart_priv{
	struct io_reg regs[JTAG_UART_REG_COUNT];
	struct fifo tx_fifo;
};

#define ALTERA_JTAGUART_DATA_DATA_MSK             (0x000000FF)
#define ALTERA_JTAGUART_DATA_RVALID_MSK           (0x00008000)
#define ALTERA_JTAGUART_DATA_RAVAIL_MSK           (0xFFFF0000)
#define ALTERA_JTAGUART_DATA_RAVAIL_OFST          (16)

#define ALTERA_JTAGUART_CONTROL_RE_MSK            (0x00000001)
#define ALTERA_JTAGUART_CONTROL_WE_MSK            (0x00000002)
#define ALTERA_JTAGUART_CONTROL_RI_MSK            (0x00000100)
#define ALTERA_JTAGUART_CONTROL_RI_OFST           (8)
#define ALTERA_JTAGUART_CONTROL_WI_MSK            (0x00000200)
#define ALTERA_JTAGUART_CONTROL_AC_MSK            (0x00000400)
#define ALTERA_JTAGUART_CONTROL_WSPACE_MSK        (0xFFFF0000)
#define ALTERA_JTAGUART_CONTROL_WSPACE_OFST       (16)

extern struct io_device jtag_uart_io_device;
#endif /* __JTAG_UART_H__*/
